УниВин.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 

(******************************************************************************)
(**)                        ОТДЕЛ УниВин+;
(******************************************************************************)
(* НАЗНАЧЕНИЕ: перекодировка текстовых файлов в УНИ и в ВИН                   *)
(******************************************************************************)
ИСПОЛЬЗУЕТ 
  ОС       ИЗ "...\Отделы\Обмен\",
  Знак     ИЗ "...\Отделы\Иное\",
  Параметр ИЗ "...\Отделы\Обмен\",
  Читать   ИЗ "...\Отделы\Обмен\",
  Писать   ИЗ "...\Отделы\Обмен\",
  Вывод    ИЗ "...\Отделы\Обмен\",
  Файл     ИЗ "...\Отделы\Обмен\";

(******************************************************************************)
ЗАДАЧА Ошибка1(ц-:ЦЕПЬ);
УКАЗ
  Вывод.Цепь(ц);
  Вывод.Цепь("^УниВин <ВУНИ> <ВВИН> вх.файл(ы)");
  (* Пояснение: при записи текста в поток (в т.ч. на экран)
   * знак ^ обозначает переход на новую строку и сброс данных *) 
  СТОП(1)
КОН Ошибка1;

(******************************************************************************)
ЗАДАЧА Ошибка2(ц1-,ц2-:ЦЕПЬ);
УКАЗ
  Вывод.Цепь(ц1);
  Ошибка1(ц2)
КОН Ошибка2;

(******************************************************************************)
ЗАДАЧА Перевод(ч:Читать.Поток; п:Писать.Поток; УвВ:КЛЮЧ);
(* УвВ=ВКЛ, если перевод Уни В Вин *)
УКАЗ
  ЕСЛИ УвВ ТО
    ч.видЗнаков:=Читать.знУни;
    п.видЗнаков:=Писать.знВин
  ИНАЧЕ
    ч.видЗнаков:=Читать.знВин;
    п.видЗнаков:=Писать.знУни
  КОН;
  ПОКА НЕ Читать.Конец(ч) ВЫП 
    Писать.ЗнакЦепи(п,Читать.ЗнакЦепи(ч))
  КОН
КОН Перевод;

(******************************************************************************)
ЗАДАЧА Голова();
ПЕР
  ч:Читать.Поток;
  п:Писать.Поток;
  чимя:Файл.ВПолного;
  путь:Файл.ВПути;
  имя:Файл.ВИмени;
  тип:Файл.ВТипа;
  увв,рез:КЛЮЧ;
  парам:ЦЕЛ;
  поиск:Файл.Поиск;

  ЗАДАЧА НовоеИмя;
  ПЕР
    пимя:ДОСТУП К ЦЕПЬ;
  УКАЗ
    СОЗДАТЬ(пимя,поиск.имя);
    ЕСЛИ ОС.СледующийПоискФ(поиск) ТО
      НовоеИмя
    КОН;
    Вывод.Цепь(пимя^);
    Вывод.Цепь("^");
    Файл.РазобратьИмя(пимя^,путь,имя,тип);
    Файл.СобратьИмя(чимя,путь,имя,"BAK");
    рез:=ОС.УдалитьФ(чимя);
    рез:=ОС.ПереименоватьФ(пимя^,чимя);
    ч:=Читать.Открыть(чимя);
    ЕСЛИ ч=ПУСТО ТО
      Ошибка2(чимя," не открывается")
    КОН;
    п:=Писать.Открыть(пимя^);
    ЕСЛИ п=ПУСТО ТО
      Ошибка2(пимя^," не открывается")
    КОН;
    Перевод(ч,п,увв);
    Читать.Закрыть(ч);
    Писать.Закрыть(п)
  КОН НовоеИмя;

УКАЗ
  парам:=1;
  ЕСЛИ парам >= Параметр.всего ТО
    Ошибка1("Нет параметров")
  КОН;
  Параметр.Текст(парам,чимя);
  ЕСЛИ чимя = "ВУНИ" ТО
    увв:=ОТКЛ
  АЕСЛИ чимя = "ВВИН" ТО
    увв:=ВКЛ
  ИНАЧЕ
    Ошибка1("Неверный параметр")
  КОН;
  УВЕЛИЧИТЬ(парам);
  ЕСЛИ парам >= Параметр.всего ТО
    Ошибка1("Нет имени входного файла")
  КОН;
  Параметр.Текст(парам,чимя);
  ЕСЛИ НЕ ОС.ПервыйПоискФ(чимя,поиск) ТО
    Ошибка2(чимя," не найден(ы)")
  КОН;
  НовоеИмя
КОН Голова;

УКАЗ
  Голова
КОН УниВин.




Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
 email
 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы